#ifndef PARSERDEJUGADAS_H_
#define PARSERDEJUGADAS_H_

#include <libxml++/libxml++.h>
#include <libxml/tree.h>
#include <iostream>
#include "Mapa.h"
#include "Territorio.h"
#include "Continente.h"
#include "Jugador.h"
#include "Ataque.h"
#include "mutex.h"
#include "TiradorDeDados.h"

using namespace red::hilos::thread;

/**
 * Esta clase se encarga de parsear los mensajes que representan acciones de los jugadores y llamar a la
 * implementacion correspondiente de esas acciones en el modelo.
 */
class JuegoServerImp;

class ParserDeJugadas : public xmlpp::SaxParser
{
private:
	JuegoServerImp* juego;
	Mutex* mutex_juego;
	Jugador* jugador;
public:
	ParserDeJugadas(JuegoServerImp* juego);
	ParserDeJugadas(JuegoServerImp* juego, Jugador* jugador, Mutex* mutex_juego);
	virtual ~ParserDeJugadas();
protected:
  //overrides:

	virtual void on_start_element(const Glib::ustring& name, const AttributeList& properties);
	void broadcastMensajeDeChat(const AttributeList& properties);
	void unirse(const AttributeList& properties);
	void tirarDados(const AttributeList& properties);
	void pasar(const AttributeList& properties);
	void atacar(const AttributeList& properties);
	void moverEjercitos(const AttributeList& properties);
	void colocarEjercitos(const AttributeList& properties);
	void abandonar(const AttributeList& properties);
	virtual void on_end_element(const Glib::ustring& name);
	virtual void on_characters(const Glib::ustring& characters);
	virtual void on_comment(const Glib::ustring& text);
	virtual void on_warning(const Glib::ustring& text);
	virtual void on_error(const Glib::ustring& text);
	virtual void on_fatal_error(const Glib::ustring& text);

  };

#endif /*PARSERDEJUGADAS_H_*/
